package cheme.ProcessEditor;

import org.eclipse.draw2d.Border;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.swt.graphics.Color;

/*
 * Presentation constants... mainly colors and borders used by figures.
 */
public interface ChemePresentation
{
	static final Color defaultBackground = new Color(null, 235,235,235);
	static final Color defaultForeground = ColorConstants.black; //typically interpreted as text color by GEF figures
	static final Border defaultBorder = new LineBorder(ColorConstants.lightGray);
	
	static final Border whiteBorder = new LineBorder(ColorConstants.white);
	
	interface Fields
	{
		static final Color defaultBackground = ChemePresentation.defaultBackground;
		static final Color defaultForeground = ChemePresentation.defaultForeground;
		static final Border defaultBorder = ChemePresentation.defaultBorder;

		static final Color initialBackground = new Color(null, 255,255,255);
		static final Color initialForeground = new Color(null, 200,200,200);
		static final Border initialBorder = new LineBorder(initialForeground);
		
		static final Color immutableBackground = ColorConstants.lightGray;
		static final Color immutableForeground = ColorConstants.white;
		static final Border immutableBorder = whiteBorder;
		
		interface Equations
		{
			interface Palette
			{
				static final Color background = new Color(null, 220,220,250);
				static final Color foreground = ColorConstants.blue;
			}
			
			interface Operator
			{
				static final Color background = Palette.background;
				static final Color foreground = Palette.foreground;
			}
			
			interface Identifier
			{
				static final Color background = defaultBackground;
				static final Color foreground = ColorConstants.darkGray;
				static final Border border = defaultBorder;
			}
		}
		
		interface Tags
		{
			static final Color calloutColor = ColorConstants.gray;
			interface Overall
			{
				static final Color background = defaultBackground;
				static final Color foreground = defaultForeground;
				static final Border border = defaultBorder;
			}
			
			interface Component
			{
				static final Color background = Overall.background;
				static final Color foreground = Overall.foreground;
				static final Border border = defaultBorder;
			}
		}
	}
	
	/**
	 * Typically not visible
	 */
	interface Rows
	{
		interface Bullets
		{
			static final Color background = new Color(null, 240,240,255);
			static final Color foreground = ColorConstants.lightGray;
		}
	}
	
	/**
	 * Typically not visible
	 */
	interface Tables
	{
	}
	
	interface TableEditors
	{
		static final Color defaultBackground = ColorConstants.white;
		static final Color defaultForeground = ChemePresentation.defaultForeground;
		static final Border defaultBorder = ChemePresentation.defaultBorder;
		
		interface Equations
		{
			interface Title
			{
				static final String title = "Equations";
				static final Color background = ColorConstants.lightGray;
				static final Color foreground = ColorConstants.black;
				static final Border border = new LineBorder(ColorConstants.gray);
			}
			
			static final Color background = defaultBackground;
			static final Color foreground = defaultForeground;
			static final Border border = defaultBorder;
		}
		
		interface Tags
		{
			static final Color background = defaultBackground;
			static final Color foreground = defaultForeground;
			static final Border border = defaultBorder;
			static final int opacity = 255;
		}
	}
	
	interface Streams
	{
		static final Color defaultStreamForeground = ColorConstants.darkGray;
		static final int lineWidth = 0;
	}
}
